package me.jzn.alib;

import android.content.Context;
import android.view.View;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import me.jzn.core.Core;

public final class ALib {
    private static Context sApp;
    private static Logger sLog;

    public static final Context app() {
        return sApp;
    }

    public static final Logger log() {
        if (sLog == null) {
            sLog = LoggerFactory.getLogger("===APP");
        }
        return sLog;
    }

    /**
     * @param debug   一些方法的实现可能不是很确定是否正确，但是又得紧急使用，可以一边使用，一边监控状态是否正确，便于调试。
     * @param showLog 跟isDebug不一样，非debug模式下，也可以打印日志用于打印信息。
     */
    public static final void init(Context app, boolean debug, boolean showLog) {
        if (sApp != null) {
            if (!sApp.equals(app.getApplicationContext())) {
                throw new IllegalStateException("Alib has been inited!!");
            }
            return;
        }
        sApp = app.getApplicationContext();
        Core.init(debug, showLog);
    }

    /**
     * 在EditMode中初始化，为了简化代码.
     */
    public static final void initInEditMode(View view) {
        if (view.isInEditMode()) {
            if (sApp == null) {
                init(view.getContext(), true, true);
            }
        }
    }

    /**
     * 是否需要打印日志，有时需要release模式下，也需要调试日志
     */
    @Deprecated
    public static final boolean isShowLog() {
        return Core.isShowLog();
    }

    @Deprecated
    public static final boolean isDebug() {
        return Core.isDebug();
    }

}
